[LLM Wiki理论与实践-10]OpenWiki为Coding Agent提供的6个工具函数

OpenWiki 实战:Markdown 知识库如何让 AI Agent 检索效率翻倍 在 AI Agent 开发中,RAG(检索增强生成)是提升回答准确率的关键技术,而知识库的组织方式直接影响检索质量。传统方案常将文档存入数据库或向量库,但忽略了结构化和元数据的重要性。OpenWiki 以 Markdown 为存储、CLI 为交互,通过 frontmatter 元数据(如 audience、freshness)和按标题切分策略,为 Agent 提供高质量上下文。这种方案能显著提升召回准确率、降低 token 消耗,适用于 LangChain 等编排框架下的知识增强场景。本文深入解析 Open 阅读详情

LLM Wiki理论与实践-09:将OpenWiki融入Coding Agent为你省点钱介绍了OpenWiki的Code模式,并通过一个简单的实例演示了如何将它整合进Codex。不论是针对Codex还是Claude Code,OpenWiki都是以MCP服务器的形式注册到Coding Agent上,并且采用基于stdio的跨进程通信。OpenWiki的所有功能都提供相应的工具函数来提供,本篇文章就来单独聊聊这些工具函数。

1. 使用程序探索OpenWiki MCP提供的工具列表

我们可以直接通过一个简单的程序来探索OpenWiki MCP服务器提供的所有工具函数。在已经通过执行openwiki --init命令进行OpenWiki初始化的目录下,我们编写了如下的一段程序。如代码所示,我们创建了一个MultiServerMCPClient对象,并添加了一个针对stdio链接的MCP服务器,后者通过执行openwiki mcp命令启动。我们针对这个连接调用MultiServerMCPClient对象的get_tools方法得到一组工具列表,并将每个工具的名称和参数信息输出出来。

from langchain_mcp_adapters.client import MultiServerMCPClient
from typing import cast
import asyncio

client = MultiServerMCPClient(
    {
        "server": {
            "transport": "stdio",
            "command": "openwiki",
            "args": ["mcp"],
        }
    }
)

async def main():
    tools = await client.get_tools(server_name="server")
    for tool in tools:
        print(f"""\
{tool.name}:
  - description: {tool.description}
  - args: """)

        for (name, arg) in tool.args.items():
            print(f"    - {name}:")
            for (k, v) in cast(dict, arg).items():
                print(f"      - {k}: {v}")
        print()

asyncio.run(main())

输出:

openwiki_begin:
  - description: Start or resume OpenWiki repository generation. Returns status=noop for a clean update, otherwise the durable planning/generation run state. An unrecognized `language` fails the call with invalid_input instead of starting a run.
  - args: 
    - root:
      - type: string
      - minLength: 1
    - mode:
      - type: string
      - enum: ['init', 'update']
    - language:
      - type: string
      - minLength: 1
      - description: BCP-47 code, e.g. "ko" (not "Korean").
    - force:
      - type: boolean

openwiki_submit_plan:
  - description: Submit the final canonical page plan. OpenWiki validates it and durably persists the ordered PageJob queue before accepting it.
  - args: 
    - runId:
      - type: string
      - format: uuid
      - pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
    - pages:
      - type: array
      - items: {'type': 'object', 'properties': {'path': {'type': 'string', 'minLength': 1}, 'title': {'type': 'string', 'minLength': 1}, 'purpose': {'type': 'string', 'minLength': 1}, 'seedPaths': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}}, 'relatedPages': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}}, 'instructions': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}}}, 'required': ['path', 'title', 'purpose'], 'additionalProperties': False}
    - deletePages:
      - type: array
      - items: {'type': 'string', 'minLength': 1}

openwiki_next_page:
  - description: Return the first pending page job, its Claim count, and only stale or unresolved Claims requiring an explicit decision; current issue-free Claims remain compact unless inspected on demand.
  - args: 
    - runId:
      - type: string
      - format: uuid
      - pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

openwiki_inspect_page_claims:
  - description: Return the current pending page's complete Claim set without opaque evidence versions. Use only before intentionally revising or removing otherwise-current content; focused updates normally needonly the issue Claims returned by openwiki_next_page.
  - args: 
    - runId:
      - type: string
      - format: uuid
      - pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
    - jobId:
      - type: string
      - format: uuid
      - pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

openwiki_submit_page:
  - description: Complete the current page job after its Markdown is written. Submit only sparse decisions: confirmedClaimIds for rechecked issue Claims retained unchanged, claims for revisions or additions, andretractedClaimIds for removals. Other current Claims are retained automatically. The final page and reconciled Claim set must agree.
  - args: 
    - runId:
      - type: string
      - format: uuid
      - pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
    - jobId:
      - type: string
      - format: uuid
      - pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
    - confirmedClaimIds:
      - type: array
      - items: {'type': 'string', 'minLength': 1}
    - claims:
      - type: array
      - items: {'type': 'object', 'properties': {'id': {'type': 'string', 'minLength': 1}, 'statement': {'type': 'string', 'minLength': 1}, 'evidence': {'minItems': 1, 'type': 'array', 'items': {'type': 'object', 'properties': {'resource': {'type': 'string', 'minLength': 1}}, 'required': ['resource'], 'additionalProperties': False}}}, 'required': ['statement', 'evidence'], 'additionalProperties': False}
    - retractedClaimIds:
      - type: array
      - items: {'type': 'string', 'minLength': 1}

openwiki_finish:
  - description: Finish only after every PageJob is complete. Runs deterministic deletion, validation, indexing, provenance, Claims finalization, and run metadata persistence.
  - args: 
    - runId:
      - type: string
      - format: uuid
      - pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

输出结果呈现了如下六个工具函数:

  • openwiki_begin: 启动或恢复一个Wiki生成任务。传入init/update和语言,返回一个持久化的runId用于追踪整个生命周期(如果代码无更新则返回 noop)。
  • openwiki_submit_plan: 向OpenWiki提交全局的页面规划蓝图。模型在这里定义要生成哪些页面、页面标题、目的以及相关的关联文件,校验通过后会在后台生成一个有序的页面任务队列(PageJob queue)。
  • openwiki_next_page: 从任务队列中获取下一个待处理的页面任务。它会返回该页面的ID,并聪明地只返回那些过期或未解决的Claims(声明),从而极大节省模型的上下文Token。
  • openwiki_inspect_page_claims: 深度检查当前页面的完整Claim集合。通常不需要用,只有在模型需要主动修改或删除原本正常的既有内容时,才用它来获取全量上下文。
  • openwiki_submit_page: 提交当前页面生成的Markdown内容及对应的Claim 变更决策。模型只需提交新增、修改或撤回的稀疏数据(Sparse decisions),系统会自动保留未变动的旧Claim,并校验页面与证据是否一致。
  • openwiki_finish: 在队列中所有页面任务完成后进行收尾。触发确定性的清理、最终校验、建立索引、固化出处(Provenance)以及持久化运行元数据,确保最终产出是一个“零幻觉”的干净Wiki。

2. 针对工具函数的调用流程

在LLM Wiki理论与实践-09:将OpenWiki融入Coding Agent为你省点钱介绍了openwiki integrations install命令内部执行的三个操作,其中一个就是在%userprofile%.agents\skills或者~/agents/skills目录下添加OpenWiki对应的Skill。这个Skill提供的处理流程就包含针对上述六个工具函数的调用。

---
name: openwiki
description: Initialize or update an OpenWiki repository wiki using the OpenWiki resumable page-job lifecycle. Use when asked to document a repository, initialize OpenWiki, update OpenWiki after source changes, resume an interrupted OpenWiki run, or repair stale generated documentation.
---

# OpenWiki

OpenWiki owns run state, the page queue, Claims validation/persistence, indexes,
provenance, and finalization. You own semantic repository research and the prose
for the single page OpenWiki assigns you.

## Required sequence

1. Resolve the exact Git top-level with `git rev-parse --show-toplevel` (or
   `git -C <path> rev-parse --show-toplevel` for an explicit target).
2. Call `openwiki_begin` with that absolute root and mode `init` or `update`.
   An active run may have been started by native OpenWiki or another supported
   host; always continue the durable run and queue returned by `openwiki_begin`.
3. If `openwiki_begin` returns `status: "noop"`, report that no update is needed
   and stop.
4. If it returns `phase: "planning"`:
   - first map repository manifests, major directories, entrypoints, and public
     surfaces; then trace representative end-to-end flows through callers,
     state/persistence, failure handling, configuration, operations, and
     integrations; finally inspect focused tests and neighboring implementations
     to verify boundaries, invariants, and non-obvious connections;
   - stop once the major systems, behaviors, and relationships are grounded;
     avoid exhaustive file-by-file inventory;
   - design a repository-specific documentation taxonomy around meaningful
     systems and workflows rather than mirroring source directories;
   - use hierarchical paths for meaningful architecture, concept, workflow,
     operations, integration, and testing groups instead of a flat dump of
     unrelated top-level pages; do not plan generated `index.md` pages;
   - populate `relatedPages` with useful conceptual and workflow neighbors so
     readers can navigate across system boundaries;
   - for init, include `/openwiki/quickstart.md`;
   - for update, never delete `/openwiki/quickstart.md`; if the update adds,
     deletes, moves, or materially regroups wiki pages, include quickstart so its
     task-routing map is refreshed;
   - an update with no required page edits or deletions may submit `pages: []`;
   - call `openwiki_submit_plan` with final canonical page paths, concise page
     purposes, useful seed source paths, meaningful `relatedPages`, page-relevant
     global `instructions`, and any page deletions required by an update.
5. Repeatedly call `openwiki_next_page`.
6. For each pending page job:
   - use the `language` returned by `openwiki_begin` as the output language;
   - read the current page first when it exists;
   - research that page's topic using native repository tools, starting from its
     seed paths but following callers, callees, dependencies, schemas, state
     owners, integration boundaries, tests, and operational contracts when
     needed;
   - preserve accurate unaffected content on update;
   - write exactly the assigned Markdown page;
   - current issue-free Claims are retained automatically; do not resubmit them;
   - call `openwiki_inspect_page_claims` only before intentionally revising or
     removing otherwise-current content whose Claim ids are not included in the
     pending job;
   - call `openwiki_submit_page` with only sparse decisions: put rechecked issue
     Claims retained unchanged in `confirmedClaimIds`, put revised existing and
     genuinely new Claims in `claims`, and put removed Claims in
     `retractedClaimIds`. If validation rejects the page or payload, correct it
     and retry; completion requires one successful submission.
7. When `openwiki_next_page` returns `status: "complete"`, call
   `openwiki_finish`.
8. Report success only after `openwiki_finish` returns `complete`.
...

整个流程是一个闭环的Begin -> Plan -> (Next -> Submit)* -> Finish循环。OpenWiki掌控着生命周期、队列和Claim的验证与持久化,而模型只负责单个页面的语义研究与内容撰写,实现了工程控制与AI生成能力的完美解耦。整个执行流程是一个严格由工具函数驱动的闭环状态机,强调按序调用、不可跳步。具体流程如下:

  • 启动与规划:首先调用openwiki_begin启动任务。若返回noop则直接终止;若进入 planning阶段,模型需阅读代码设计页面蓝图,随后调用 openwiki_submit_plan提交计划,系统将其固化为有序的任务队列。
  • 循环领取任务:进入页面生成循环,反复调用openwiki_next_page领取具体的页面任务(此时系统会精简过期的 Claims以节省Token)。
  • 按需检查:若模型需要修改未报错的正常内容,必须调用openwiki_inspect_page_claims获取完整的claim_id集合。
  • 内容提交与校验:完成页面撰写后,调用 openwiki_submit_page 提交内容与“稀疏”的 Claim 决策(确认、修改或撤回)。若校验失败,模型必须修正并重复调用该函数,直到成功。
  • 队列终结:当openwiki_next_page返回 complete时,退出循环,调用openwiki_finish触发最终校验与索引固化。只有该函数返回成功后,流程才算真正结束。

3. openwiki_begin

openwiki_begin是OpenWiki的启动与状态机入口。它的核心功能是:校验目标Git仓库根目录,并根据init或update模式启动或恢复任务。通过返回持久化的runId,它确保了长周期任务的可中断与恢复;若探测到代码无变更,则直接返回noop短路流程。此外,它还负责接收目标语言,并输出当前阶段(如planning)及变更统计,为后续的页面规划与生成奠定状态基础。OpenWiki使用如下这个begin函数来处理调用请求。

async begin(input: BeginRequest): Promise<unknown>

export interface BeginRequest {
  mode: HostRunMode;
  language?: string;
  force?: boolean;
}
export type HostRunMode = "init" | "update";

4. openwiki_submit_plan

openwiki_submit_plan是OpenWiki 的全局规划提交入口。它的核心功能是接收大模型对仓库代码的全局分析结果,定义需要生成的Wiki 页面层级、目标路径、用途以及关联的代码种子文件。提交后,OpenWiki 会严格校验该规划的合法性,并将其持久化为一个有序的页面任务队列(PageJob queue)。它还负责处理更新模式下的页面删除请求,从而将无序的文档构想转化为可控的串行生成任务流。OpenWiki使用如下这个submitPlan函数来处理调用请求。

async submitPlan(input: SubmitPlanRequest): Promise<unknown>

export type SubmitPlanRequest = z.infer<typeof SubmitPlanInput>;
export const SubmitPlanInput = z
  .object({
    runId: z.string().uuid(),
    pages: z.array(PlanPageInput),
    deletePages: z.array(CanonicalString).optional(),
    deferUnplannedClaimIssues: z.boolean().optional(),
  })
  .strict();
export const PlanPageInput = z
  .object({
    path: CanonicalString,
    title: CanonicalString,
    purpose: CanonicalString,
    seedPaths: z.array(CanonicalString).optional(),
    relatedPages: z.array(CanonicalString).optional(),
    instructions: z.array(CanonicalString).optional(),
  })
  .strict();
const CanonicalString = z.string().trim().min(1);

5. openwiki_next_page

openwiki_next_page是 OpenWiki的任务队列调度器。它的核心功能是从持久化的PageJob队列中按顺序提取下一个待处理的页面任务,并返回其唯一run_id。为了极致节省大模型上下文,它仅返回该页面中**过期(stale)或未解决(unresolved)**的Claim供模型重新检查。当所有任务处理完毕时,它会返回complete状态,引导流程进入收尾阶段。OpenWiki使用如下这个nextPage函数来处理调用请求。

async nextPage(input: NextPageRequest): Promise<unknown>

export type NextPageRequest = z.infer<typeof NextPageInput>;
export const NextPageInput = RunInput;
export const RunInput: z.ZodType<RunRequest> = z
  .object({
    runId: z.string().uuid(),
  })
  .strict();
export interface RunRequest {
  runId: string;
}

6. openwiki_inspect_page_claims

openwiki_inspect_page_claims是OpenWiki的全量声明检查器。它的核心功能是返回当前待处理页面中完整且详尽的Claim集合(包含所有未过期的正常声明)。它专用于一种场景:当模型在更新页面时,意图主动修改或删除原本无报错的既有内容,必须调用此工具获取精确的Claim ID,以确保后续通过openwiki_submit_page提交的稀疏变更能被正确关联和校验。OpenWiki使用如下这个inspectPageClaims函数来处理调用请求。

async inspectPageClaims(input: InspectPageClaimsRequest): Promise<unknown>

export type InspectPageClaimsRequest = z.infer<typeof InspectPageClaimsInput>;
export const InspectPageClaimsInput = z
  .object({
    runId: z.string().uuid(),
    jobId: z.string().uuid(),
  })
  .strict();

7. openwiki_submit_page

openwiki_submit_page是 OpenWiki的单页内容与声明提交入口。它的核心功能是接收模型撰写完毕的当前页面Markdown 内容,以及一份稀疏的声明决策(包含重新确认、修改新增或撤回的 Claim)。它负责校验最终页面文本与底层证据声明是否一致,并自动保留未变动的旧Claim。如果校验失败,它会拒绝接收并报错,要求模型修正后重试,从而确保每一页的生成质量与代码事实严格对齐。OpenWiki使用如下这个submitPage函数来处理调用请求。

async submitPage(input: SubmitPageRequest): Promise<unknown>

export type SubmitPageRequest = z.infer<typeof SubmitPageInput>;
export const SubmitPageInput = z
  .object({
    runId: z.string().uuid(),
    jobId: z.string().uuid(),
    confirmedClaimIds: z.array(CanonicalString).optional(),
    claims: z.array(ProposedPageClaimInput).optional(),
    retractedClaimIds: z.array(CanonicalString).optional(),
  })
  .strict();

8. openwiki_finish

openwiki_finish是 OpenWiki的全局收尾与固化执行器。它的核心功能是在确认所有页面任务(PageJob)均已完成后,触发一系列确定性的收尾工作:包括清理过期文件、执行最终全局校验、建立文档索引、固化出处(Provenance)以及持久化运行元数据。只有当该工具成功返回,标志着整个OpenWiki的生成或更新流程彻底结束,确保最终产出一个结构完整且零幻觉的干净Wiki仓库。OpenWiki使用如下这个finish函数来处理调用请求。

async finish(input: RunRequest): Promise<unknown> 

export interface RunRequest {
  runId: string;
}
Yolov5s/Yolov8s网络结构图 yolov8、yolov5网络结构图 阅读详情

相关推荐

智能车轮腿组‘定点排雷’科目全解析:从雷区识别到姿态控制

本文深入解析了智能车竞赛轮腿穿越组‘定点排雷’科目的核心技术。从构建鲁棒的视觉识别系统,到融合编码器与IMU进行厘米级定位,再到实现框内高精度旋转的姿态控制,提供了一套完整的从感知到执行的闭环技术方案,助力参赛队伍攻克这一高难度科目。

weixin_29161719的博客 640

[LLM Wiki理论与实践-07]用来生成OpenWiki知识库和完成对话的Agent

[LLM Wiki理论与实践-06:详细解析OpenWiki如何摄取外部数据源]介绍的Connector仅仅是将内容导入到对应的源文件中,并更新自身的状态,并不涉及Wiki页面的生成。为构建的知识库生成Wiki,以及针对Wiki完成与用户(针对Personal模式)和Coding Agent的交互需要借助LLM的力量,其背后自然是一个Agent。作为LangChain生态的一部分,OpenWiki背后的这个Agent是通过DeepAgents创建的。

JaydenAI的博客 363

智能排班考勤系统原型

可实现从业务预测,到工时预估,再到人员分配全流程自动智能排班。可应用于客服行业或工厂的智能排班系统。

gywm15111336483的专栏 996

[LLM Wiki理论与实践-04]使用OpenWiki的Personal模式构建知识库

[LLM Wiki理论与实践-01:使用Obsidian来感受LLM Wiki的三层架构]我们简单介绍了LLM Wiki的三层架构,并使用Obsidian对此进行了简单的模拟。[LLM Wiki理论与实践-02:使用Obsidian导入外部数据源构建知识库]我们介绍了如何充分利用Obsidian的插件导入外部数据源来建立知识库。在LangChain体系中针对LLM Wiki的实现是一个名为OpenWiki的CLI工具。

JaydenAI的博客 376

AFE芯片做什么用的?AFE(Analog Front End) 模拟前端

AFE采样精度的影响因素非常多,需要综合考虑各种因素,并根据实际应用场景来选择合适的参数和方法。通过减少噪声、提高采样频率、调节放大器增益、降低电源噪声、优化传输线路、进行温度补偿、选择合适的ADC分辨率、根据信号类型选择合适的AFE参数、进行器件匹配和校准等方法,可以提高AFE的采样精度,从而更好地满足各种应用需求。版权声明:本文为优快云博主「czf.Forver」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

学海无涯的专栏 4万+

【ComfyUI】SD1.5 + ControlNet 边缘检测融合动漫转真人

本文介绍了一个基于ComfyUI的动漫转真人图像生成工作流,通过多模型协同实现高质量的二次元图像转换。该工作流集成了Canny线稿预处理、ControlNet结构控制、VAE编码解码和人脸精细化处理等核心环节,采用majicmixRealistic_v7作为主模型,配合yolov8、SAM等辅助模型。整个流程包含11个标准化步骤,从图像输入、预处理到最终超分输出,通过ControlNet引导和CLIP语义控制确保生成图像的写实感和结构准确性,特别针对人脸区域进行专业优化,最终可输出高分辨率写实人像。

Mr数据杨 1127

[LLM Wiki理论与实践-05]解读OpenWiki的Personal模式构建的知识库目录结构

[LLM Wiki理论与实践-04:使用OpenWiki的Personal模式构建知识库]介绍了如何执行安装OpenWiki和通过执行`openwiki personal --init`命令以个人模式进行初始化,最终调用`openwiki personal --update`和`openwiki ingest`命令利用配置的Connector加载外部数据源来生成构建个人知识库的Wiki页。这篇文章我们就来看看采用OpenWiki的Personal模式构建的知识库对应目录的结构以及具体文件的内容。

JaydenAI的博客 359

DeepSeek如何构建可扩展的 AI 驱动交易系统,基于 MetaTrader 5 与 Python 利用先进的数据处理、机器学习和容器化部署来优化算法交易。

MT5 Python API 架构设计分为三层:通信层:利用异步消息传递(例如 ZeroMQ 或标准套接字编程)支持每秒数万个数据请求。转换层: C++ 动态库有效地将 MT5 命令转换为 Python 对象(反之亦然),从而优化速度和内存使用率。接口层:提供Pythonic API,封装了所有终端功能,包括:1)实时价格订阅(滴答或秒级更新)2)历史数据检索(从M1到更高的时间范围)3)订单流监控(交易详情和市场深度)4)策略执行引擎(用于算法交易)

iCloudEnd的博客 1383

OpenWiki

但它生成的 Wiki 不是给人读的“说明文档”,而是给 AI Agent 读的“上下文记忆”。这些文档的读者是开发者,写作风格是散文式的。这会打开一个本地的交互式节点图,左侧是 Wiki 页面树,右侧是 Markdown 阅读器,可以直观地看到各页面之间的关联关系。——把代码库的结构、架构、依赖关系“编译”成一套 Agent 可以快速查阅的 Wiki,让 Agent 不用每次都从头翻代码。在代码模式下,更新还会调和过时的 Claims——如果源文件的证据变了,对应的 Wiki 页面会自动更新。

qq_20770761的博客 134

【python科研数据处理】将Endnote自动搜索的所有pdf文件,全都移动指定文件夹中

将Endnote自动搜索到的全部pdf文件,全都移动指定文件夹中1 背景2 问题解决 手动反爬虫,禁止转载:原博地址 https://blog.youkuaiyun.com/lys_828/article/details/122370892(优快云博主:Be_melting) 知识梳理不易,请尊重劳动成果,文章仅发布在优快云网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息 1 背景 在进行期末考试周后,面对最后一门功课,需要提交至少80篇SCI参考文献,因此最快下载文献的方式就是通过Web of S

lys_828的博客 1827

优化相机姿态和三维点云的Bundle Adjustment算法及其编程实现

重投影误差是指将优化后的相机姿态和三维点云投影到图像平面上,与对应的图像特征点之间的距离。Bundle Adjustment(捆绑调整)是一种用于同时优化相机姿态和三维点云的算法,它可以提高三维重建和相机定位的精度。下面是一个简单的Python示例代码,演示了如何使用Bundle Adjustment算法优化相机姿态和三维点云的参数。通过以上步骤,Bundle Adjustment算法可以不断地优化相机姿态和三维点云的参数,从而提高重建和定位的精度。Bundle Adjustment算法的编程实现。

CyberXZ的博客 741

[LLM Wiki理论与实践-08]OpenWiki Agent的系统提示词

[LLM Wiki理论与实践-07:用来生成OpenWiki知识库和完成对话的Agent]详细介绍了OpenWiki针对不同的模式(Code + Personal)和命令(update + chat)会利用DeepAgents创建一个怎样的Agent,我们介绍了注册的工具函数,用来提供Wiki、Skill和对话历史的存储后端,服务于持久化的Checkpointer,以及所有的中间件。现在我们来补充组成这个Agent的最后一块拼图,就是它使用的系统提示词。

JaydenAI的博客 254

1.4 你绝对不能错过的天气查询工具:MCP 标准化接入实战

本文介绍了如何构建一个符合MCP标准的天气查询服务。通过FastMCP框架集成OpenWeatherMap API,实现实时天气、天气预报和历史天气查询功能。文章详细展示了从环境准备、插件设计到控制器实现的完整流程,包括如何定义工具函数、配置路由和中间件。同时讲解了如何将MCP服务封装为LangChain工具并与DeepSeek等大模型集成,还涵盖了缓存、限流等高级特性。该示例演示了如何将任意API标准化为MCP服务,为Agent应用提供统一接口。

yonggeit的博客 3047

openwiki:LangChain 官方出品!会自己写、自己维护的代码 Wiki,给 AI 当记忆、给人当地图

openwiki 是 LangChain 官方开源的 CLI 工具,让 Agent 读源码自动生成并维护互相链接的 Markdown Wiki,代码一变文档跟着更新。本文跑通从代码库到可读 Wiki 的完整链路:初始化配置、一次生成与增量更新验证,并用 TaoToken 统一 Key 与 API 通道接入模型调用。官网:https://taotoken.net/?utm_source=taotoken_aicg_blog_end

weixin_35755188的博客 29

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[LLM Wiki理论与实践-09]将OpenWiki融入Coding Agent为你节省Token

针对OpenWiki的整合则将Coding Agent的执行模式升级为**先读知识库、再精准修改代码**。OpenWiki预置概念文档、测试说明、页面清单与更新时间,让Agent快速理解业务意图、定位相关代码与测试、判断信息新旧,减少Token与时间开销,降低理解偏差和跨文件遗漏,使改动更一致、可复现,文档与代码同步维护。

JaydenAI的博客 357

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OpenWiki 0.2 接入 OKF,检索省时又省 token

要看懂 OpenWiki 0.2 这次更新的分量,得先往前倒两步。今年 4 月,Andrej Karpathy 在 GitHub 上甩出一份 gist,抛了个叫 “LLM Wiki” 的想法,悄悄改变了不少人对"该怎么用大模型管知识"的理解。他的出发点是这样的:现在大多数人跟 LLM 打交道,本质上都是 RAG——你丢一堆文档进去,每次提问,系统就现去原始资料里捞几段相关的,再拼出个答案。

yanqianglifei的专栏 627

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

OpenWiki 实践指南:用 Markdown、CLI 与 AI Agent 构建知识库

Markdown 是一种轻量级标记语言,以纯文本为基础,支持结构化排版,便于版本控制和机器解析。其原理在于通过简单符号定义标题、列表、表格等元素,兼具可读性与可编辑性。在 AI 时代,Markdown 成为 AI Agent 生成内容的首选格式,因其稳定性和兼容性,能有效提升知识管理的效率。结合 CLI 工具,可实现自动化操作,如批量处理与搜索。AI Agent 则基于 LLM 和 LangChain 等框架,赋予自动化内容生成与维护能力。这些技术共同应用于构建智能知识库,解决内容结构化与协作问题。Open

weixin_28828243的博客 231

OpenWiki + LangChain:构建AI Agent可消费的文档知识层

在AI Agent开发中,如何让大模型高效读取并理解结构化文档,是RAG应用与知识型Agent落地的关键。Markdown凭借其轻量、显式结构和低token消耗,成为人机双读的理想格式;而CLI工具链则提供了人与Agent统一调用的可编程接口。将Markdown文档仓库与LangChain生态结合,可把静态文档转化为可版本控制、可实时检索的上下文源,显著降低知识同步成本。这一方案适用于智能客服、内部知识助手、多Agent协作等场景,自然收敛到OpenWiki作为文档即上下文的基础设施,配合LangChain

weixin_29035147的博客 265

OpenWiki:基于Markdown与CLI的AI Agent本地知识管理工具

在AI Agent开发中,持久化知识管理是关键挑战。Markdown作为轻量级标记语言,兼具人类可读性与机器易解析性,成为知识载体的理想选择。通过CLI接口,Agent能像执行普通命令一样读写知识库,实现零依赖集成与自动化操作。这种方案在LangChain和LangGraph工作流中价值显著,支持跨会话记忆与多Agent知识共享。OpenWiki正是这一理念的实践,它结合Markdown、CLI与AI Agent,为开发者提供高效的知识管理基础设施。

weixin_42523326的博客 199

OpenWiki:Markdown知识库与AI Agent协同的工程实践

在检索增强生成(RAG)与AI Agent应用开发中,知识库的结构化程度直接影响检索质量与模型输出。Markdown作为纯文本格式,天然具备清晰的标题层级与语义结构,便于文本分割器按标题切分并保留上下文元数据,从而提升向量检索的准确率。结合命令行接口(CLI),文档可纳入CI/CD自动化流程,实现与代码同步更新。这一技术组合在LangChain知识库问答、LangGraph智能体决策等场景中展现出显著工程价值,有效解决了文档与AI协作中的格式清洗与结构丢失问题。OpenWiki正是围绕Markdown知识底

weixin_32678995的博客 261

OpenWiki + LangChain:构建AI Agent可消费的知识库实战

Markdown作为纯文本知识载体,凭借可版本控制、可程序化解析的特性,正成为AI Agent知识库的事实标准。其原理在于LLM对Markdown原生支持,通过LangChain的文档加载器与标题切分器,可将知识库高效转化为向量索引,实现检索增强生成。技术价值在于降低RAG链路构建成本,提升检索命中率与上下文完整性。典型应用场景包括项目文档问答、规范检查与决策追溯。OpenWiki以文件系统加Markdown的朴素设计,配合CLI工具链,让AI Agent真正读懂项目知识,成为智能体的长期记忆。

weixin_33309048的博客 197

OpenWiki:为AI Agent构建结构化文档图谱的CLI工具

在AI Agent开发中,如何让模型高效理解项目全貌?OpenWiki作为一款CLI工具,通过解析Markdown文档与代码注释,自动构建结构化文档图谱,为LangChain等框架提供高质量上下文。其核心原理是提取文档元数据并建立层级、引用与语义关系,从而提升检索增强生成的准确率。该工具适用于本地知识库问答、团队文档门户等场景,显著降低文档碎片化带来的维护成本。

weixin_26749245的博客 149

OpenWiki 实战:构建 AI Agent 知识中间层与 LangChain 集成指南

在 AI Agent 开发与 LangChain 本地知识库问答场景中,如何为 LLM 提供结构化、可解析的知识源是关键挑战。OpenWiki 作为一种面向 AI Agent 的知识中间层,通过约定 Markdown 标题层级与 YAML 元数据,将碎片化文档转化为机器可读的规范输入,显著提升检索增强生成的效果。其核心原理在于以文件系统为中心,利用 Markdown 生态实现低摩擦知识管理,并借助 CLI 工具链完成批量规范化。技术价值体现在降低 LangChain 知识库维护成本、提高 Agent 回答准

weixin_42573113的博客 177

OpenWiki:CLI驱动的本地化知识协同协议

知识管理正从静态文档库向可调度、可编程的智能体演进。OpenWiki以CLI为统一入口、Node.js为运行基座、LLM为推理内核,构建起轻量级、零运维、嵌入开发流的知识协同协议。其核心价值在于打破传统Wiki的中心化架构与权限壁垒,实现知识即模块、查询即调用、更新即交付——尤其适合工程师主导的技术团队快速落地。结合LangChain作为知识调度层、Ollama等本地LLM保障数据主权,OpenWiki天然适配Git工作流、VS Code插件、CI/CD流水线等现代研发场景,让知识沉淀真正成为日常编码的一部

weixin_29597551的博客 96

OpenWiki:基于Markdown与CLI的本地知识库,无缝集成AI Agent

在AI Agent开发中,如何让智能体高效获取本地知识?OpenWiki提供了一种基于Markdown和命令行接口的轻量级知识库方案。其原理是将文档以纯文本存储,通过CLI提供结构化检索,并封装为LangChain Tool供Agent调用。这种设计降低了token消耗,提升了检索精度,尤其适合需要长期记忆和知识共享的Agent场景。结合LangGraph,还能实现多Agent协作与经验沉淀,让知识管理从“存”转向“取”和“用”。

weixin_29047545的博客 226

OpenWiki:基于Markdown与CLI的本地知识库,为AI Agent注入知识

在AI Agent开发中,如何高效注入本地知识成为关键挑战。Markdown作为通用格式,结合CLI工具的无状态与可脚本化特性,为知识管理提供了新思路。OpenWiki以Markdown为唯一数据源,通过CLI驱动,自动构建索引与向量存储,实现本地知识库的快速检索与问答。它不绑定特定框架,却能无缝对接LangChain等Agent生态,适用于个人知识管理、AI Agent开发及技术文档维护。

weixin_28678151的博客 322
上一篇: [LLM Wiki理论与实践-09]将OpenWiki融入Coding Agent为你节省Token
JaydenAI
博客等级 码龄1年 243粉丝 326原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值