tianxincode 1.0.11 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/api.types.d.ts +1 -0
- package/dist/api/api.types.d.ts.map +1 -1
- package/dist/api/chat.routes.js +108 -139
- package/dist/api/chat.routes.js.map +1 -1
- package/dist/api/db.routes.js +8 -4
- package/dist/api/db.routes.js.map +1 -1
- package/dist/api/email.routes.d.ts +2 -0
- package/dist/api/email.routes.d.ts.map +1 -0
- package/dist/api/email.routes.js +78 -0
- package/dist/api/email.routes.js.map +1 -0
- package/dist/api/files.routes.js +54 -0
- package/dist/api/files.routes.js.map +1 -1
- package/dist/api/filesystem.routes.js +0 -2
- package/dist/api/filesystem.routes.js.map +1 -1
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +6 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/scheduler.routes.d.ts +2 -0
- package/dist/api/scheduler.routes.d.ts.map +1 -0
- package/dist/api/scheduler.routes.js +127 -0
- package/dist/api/scheduler.routes.js.map +1 -0
- package/dist/api/terminal.routes.d.ts +13 -0
- package/dist/api/terminal.routes.d.ts.map +1 -0
- package/dist/api/terminal.routes.js +77 -0
- package/dist/api/terminal.routes.js.map +1 -0
- package/dist/cli/commands.js +5 -1
- package/dist/cli/commands.js.map +1 -1
- package/dist/components/App.d.ts.map +1 -1
- package/dist/components/App.js +125 -100
- package/dist/components/App.js.map +1 -1
- package/dist/config/tx.config.d.ts +0 -1
- package/dist/config/tx.config.d.ts.map +1 -1
- package/dist/config/tx.config.js +1 -1
- package/dist/config/tx.config.js.map +1 -1
- package/dist/modules/ai/agents/chat/agent_tool.d.ts +2 -0
- package/dist/modules/ai/agents/chat/agent_tool.d.ts.map +1 -0
- package/dist/modules/ai/agents/chat/agent_tool.js +15 -0
- package/dist/modules/ai/agents/chat/agent_tool.js.map +1 -0
- package/dist/modules/ai/agents/chat/chat.agent.d.ts +32 -0
- package/dist/modules/ai/agents/chat/chat.agent.d.ts.map +1 -0
- package/dist/modules/ai/agents/chat/chat.agent.js +255 -0
- package/dist/modules/ai/agents/chat/chat.agent.js.map +1 -0
- package/dist/modules/ai/agents/chat/prompts/role.txt +31 -0
- package/dist/modules/ai/agents/code/agent_tool.d.ts +2 -0
- package/dist/modules/ai/agents/code/agent_tool.d.ts.map +1 -0
- package/dist/modules/ai/agents/code/agent_tool.js +17 -0
- package/dist/modules/ai/agents/code/agent_tool.js.map +1 -0
- package/dist/modules/ai/agents/code/code.agent.d.ts +32 -0
- package/dist/modules/ai/agents/code/code.agent.d.ts.map +1 -0
- package/dist/modules/ai/agents/code/code.agent.js +255 -0
- package/dist/modules/ai/agents/code/code.agent.js.map +1 -0
- package/dist/modules/ai/agents/code/prompts/role.txt +51 -0
- package/dist/modules/ai/agents/index.d.ts +7 -0
- package/dist/modules/ai/agents/index.d.ts.map +1 -0
- package/dist/modules/ai/agents/index.js +7 -0
- package/dist/modules/ai/agents/index.js.map +1 -0
- package/dist/modules/ai/agents/task/agent_tool.d.ts +2 -0
- package/dist/modules/ai/agents/task/agent_tool.d.ts.map +1 -0
- package/dist/modules/ai/agents/task/agent_tool.js +14 -0
- package/dist/modules/ai/agents/task/agent_tool.js.map +1 -0
- package/dist/modules/ai/agents/task/prompts/role.txt +51 -0
- package/dist/modules/ai/agents/task/task.agent.d.ts +31 -0
- package/dist/modules/ai/agents/task/task.agent.d.ts.map +1 -0
- package/dist/modules/ai/agents/task/task.agent.js +226 -0
- package/dist/modules/ai/agents/task/task.agent.js.map +1 -0
- package/dist/modules/ai/ai.service.d.ts +13 -18
- package/dist/modules/ai/ai.service.d.ts.map +1 -1
- package/dist/modules/ai/ai.service.js +40 -105
- package/dist/modules/ai/ai.service.js.map +1 -1
- package/dist/modules/ai/ai.types.d.ts +8 -5
- package/dist/modules/ai/ai.types.d.ts.map +1 -1
- package/dist/modules/ai/index.d.ts +1 -3
- package/dist/modules/ai/index.d.ts.map +1 -1
- package/dist/modules/ai/index.js +0 -2
- package/dist/modules/ai/index.js.map +1 -1
- package/dist/modules/ai/openai.provider.d.ts.map +1 -1
- package/dist/modules/ai/openai.provider.js +3 -0
- package/dist/modules/ai/openai.provider.js.map +1 -1
- package/dist/modules/ai/provider/base.d.ts +5 -0
- package/dist/modules/ai/provider/base.d.ts.map +1 -1
- package/dist/modules/ai/provider/openai/openai-agent.d.ts +8 -0
- package/dist/modules/ai/provider/openai/openai-agent.d.ts.map +1 -1
- package/dist/modules/ai/provider/openai/openai-agent.js +50 -5
- package/dist/modules/ai/provider/openai/openai-agent.js.map +1 -1
- package/dist/modules/ai/react/provider.parser.d.ts +20 -0
- package/dist/modules/ai/react/provider.parser.d.ts.map +1 -0
- package/dist/modules/ai/react/provider.parser.js +88 -0
- package/dist/modules/ai/react/provider.parser.js.map +1 -0
- package/dist/modules/ai/summarizer/summarizer.prompts.d.ts +1 -1
- package/dist/modules/ai/summarizer/summarizer.prompts.d.ts.map +1 -1
- package/dist/modules/ai/summarizer/summarizer.prompts.js +19 -19
- package/dist/modules/ai/summarizer/summarizer.prompts.js.map +1 -1
- package/dist/modules/ai/summarizer/summarizer.service.d.ts.map +1 -1
- package/dist/modules/ai/summarizer/summarizer.service.js +33 -7
- package/dist/modules/ai/summarizer/summarizer.service.js.map +1 -1
- package/dist/modules/ai/summarizer/summarizer.types.d.ts +1 -0
- package/dist/modules/ai/summarizer/summarizer.types.d.ts.map +1 -1
- package/dist/modules/config/config.service.d.ts +3 -0
- package/dist/modules/config/config.service.d.ts.map +1 -1
- package/dist/modules/config/config.service.js +33 -0
- package/dist/modules/config/config.service.js.map +1 -1
- package/dist/modules/db/db.service.d.ts +3 -0
- package/dist/modules/db/db.service.d.ts.map +1 -1
- package/dist/modules/db/db.service.js +79 -0
- package/dist/modules/db/db.service.js.map +1 -1
- package/dist/modules/email/email.config.repository.d.ts +14 -0
- package/dist/modules/email/email.config.repository.d.ts.map +1 -0
- package/dist/modules/email/email.config.repository.js +70 -0
- package/dist/modules/email/email.config.repository.js.map +1 -0
- package/dist/modules/email/email.service.d.ts +14 -0
- package/dist/modules/email/email.service.d.ts.map +1 -0
- package/dist/modules/email/email.service.js +54 -0
- package/dist/modules/email/email.service.js.map +1 -0
- package/dist/modules/email/email.types.d.ts +20 -0
- package/dist/modules/email/email.types.d.ts.map +1 -0
- package/dist/modules/email/email.types.js +2 -0
- package/dist/modules/email/email.types.js.map +1 -0
- package/dist/modules/email/index.d.ts +4 -0
- package/dist/modules/email/index.d.ts.map +1 -0
- package/dist/modules/email/index.js +3 -0
- package/dist/modules/email/index.js.map +1 -0
- package/dist/modules/gateway/adapters/dingtalk.adapter.d.ts +7 -0
- package/dist/modules/gateway/adapters/dingtalk.adapter.d.ts.map +1 -1
- package/dist/modules/gateway/adapters/dingtalk.adapter.js +62 -2
- package/dist/modules/gateway/adapters/dingtalk.adapter.js.map +1 -1
- package/dist/modules/gateway/gateway.service.d.ts +1 -0
- package/dist/modules/gateway/gateway.service.d.ts.map +1 -1
- package/dist/modules/gateway/gateway.service.js +61 -18
- package/dist/modules/gateway/gateway.service.js.map +1 -1
- package/dist/modules/gateway/index.d.ts +1 -1
- package/dist/modules/gateway/index.d.ts.map +1 -1
- package/dist/modules/gateway/index.js +0 -1
- package/dist/modules/gateway/index.js.map +1 -1
- package/dist/modules/scheduler/index.d.ts +4 -0
- package/dist/modules/scheduler/index.d.ts.map +1 -0
- package/dist/modules/scheduler/index.js +4 -0
- package/dist/modules/scheduler/index.js.map +1 -0
- package/dist/modules/scheduler/notify.service.d.ts +12 -0
- package/dist/modules/scheduler/notify.service.d.ts.map +1 -0
- package/dist/modules/scheduler/notify.service.js +20 -0
- package/dist/modules/scheduler/notify.service.js.map +1 -0
- package/dist/modules/scheduler/scheduler.service.d.ts +35 -0
- package/dist/modules/scheduler/scheduler.service.d.ts.map +1 -0
- package/dist/modules/scheduler/scheduler.service.js +258 -0
- package/dist/modules/scheduler/scheduler.service.js.map +1 -0
- package/dist/modules/scheduler/task-log.service.d.ts +20 -0
- package/dist/modules/scheduler/task-log.service.d.ts.map +1 -0
- package/dist/modules/scheduler/task-log.service.js +44 -0
- package/dist/modules/scheduler/task-log.service.js.map +1 -0
- package/dist/modules/terminal/index.d.ts +3 -0
- package/dist/modules/terminal/index.d.ts.map +1 -0
- package/dist/modules/terminal/index.js +2 -0
- package/dist/modules/terminal/index.js.map +1 -0
- package/dist/modules/terminal/terminal.service.d.ts +48 -0
- package/dist/modules/terminal/terminal.service.d.ts.map +1 -0
- package/dist/modules/terminal/terminal.service.js +284 -0
- package/dist/modules/terminal/terminal.service.js.map +1 -0
- package/dist/modules/tools/index.d.ts +0 -1
- package/dist/modules/tools/index.d.ts.map +1 -1
- package/dist/modules/tools/index.js +0 -1
- package/dist/modules/tools/index.js.map +1 -1
- package/dist/modules/tools/provider/email.tool.d.ts +3 -0
- package/dist/modules/tools/provider/email.tool.d.ts.map +1 -0
- package/dist/modules/tools/provider/email.tool.js +50 -0
- package/dist/modules/tools/provider/email.tool.js.map +1 -0
- package/dist/modules/tools/provider/index.d.ts.map +1 -1
- package/dist/modules/tools/provider/index.js +2 -0
- package/dist/modules/tools/provider/index.js.map +1 -1
- package/dist/modules/tools/tool.service.d.ts +1 -1
- package/dist/modules/tools/tool.service.js +4 -4
- package/dist/modules/tools/tool.service.js.map +1 -1
- package/dist/repository/aiLog.repository.d.ts +17 -0
- package/dist/repository/aiLog.repository.d.ts.map +1 -0
- package/dist/repository/aiLog.repository.js +39 -0
- package/dist/repository/aiLog.repository.js.map +1 -0
- package/dist/repository/base.repository.d.ts +6 -0
- package/dist/repository/base.repository.d.ts.map +1 -0
- package/dist/repository/base.repository.js +14 -0
- package/dist/repository/base.repository.js.map +1 -0
- package/dist/repository/index.d.ts +5 -0
- package/dist/repository/index.d.ts.map +1 -0
- package/dist/repository/index.js +5 -0
- package/dist/repository/index.js.map +1 -0
- package/dist/repository/message.repository.d.ts +9 -0
- package/dist/repository/message.repository.d.ts.map +1 -0
- package/dist/repository/message.repository.js +35 -0
- package/dist/repository/message.repository.js.map +1 -0
- package/dist/repository/session.repository.d.ts +15 -0
- package/dist/repository/session.repository.d.ts.map +1 -0
- package/dist/repository/session.repository.js +33 -0
- package/dist/repository/session.repository.js.map +1 -0
- package/dist/services/codeChat/codeChat.service.d.ts +7 -0
- package/dist/services/codeChat/codeChat.service.d.ts.map +1 -0
- package/dist/services/codeChat/codeChat.service.js +53 -0
- package/dist/services/codeChat/codeChat.service.js.map +1 -0
- package/dist/services/codeChat/codeChat.types.d.ts +47 -0
- package/dist/services/codeChat/codeChat.types.d.ts.map +1 -0
- package/dist/services/codeChat/codeChat.types.js +2 -0
- package/dist/services/codeChat/codeChat.types.js.map +1 -0
- package/dist/services/codeChat/index.d.ts +5 -0
- package/dist/services/codeChat/index.d.ts.map +1 -0
- package/dist/services/codeChat/index.js +4 -0
- package/dist/services/codeChat/index.js.map +1 -0
- package/dist/services/commandChat/commandChat.service.d.ts +15 -0
- package/dist/services/commandChat/commandChat.service.d.ts.map +1 -0
- package/dist/services/commandChat/commandChat.service.js +18 -0
- package/dist/services/commandChat/commandChat.service.js.map +1 -0
- package/dist/services/commandChat/index.d.ts +3 -0
- package/dist/services/commandChat/index.d.ts.map +1 -0
- package/dist/services/commandChat/index.js +2 -0
- package/dist/services/commandChat/index.js.map +1 -0
- package/dist/web/web.service.d.ts +1 -0
- package/dist/web/web.service.d.ts.map +1 -1
- package/dist/web/web.service.js +107 -54
- package/dist/web/web.service.js.map +1 -1
- package/package.json +7 -2
- package/test-email.ts +95 -0
- package/web/dist/assets/{AiLogsView-2O9Szm8G.js → AiLogsView-D_SQ6qo4.js} +1 -1
- package/web/dist/assets/DevWorkflowView-C5VnPngb.css +1 -0
- package/web/dist/assets/DevWorkflowView-iHAv9LC0.js +16 -0
- package/web/dist/assets/Layout-CQhbIJxB.js +1 -0
- package/web/dist/assets/TasksView-B9B2H3-S.js +1 -0
- package/web/dist/assets/TerminalView-BKhdi5UF.js +24 -0
- package/web/dist/assets/TerminalView-BU5wZZv4.css +32 -0
- package/web/dist/assets/abap-BrgZPUOV.js +6 -0
- package/web/dist/assets/apex-DyP6w7ZV.js +6 -0
- package/web/dist/assets/azcli-BaLxmfj-.js +6 -0
- package/web/dist/assets/bat-CFOPXBzS.js +6 -0
- package/web/dist/assets/bicep-BfEKNvv3.js +7 -0
- package/web/dist/assets/cameligo-BFG1Mk7z.js +6 -0
- package/web/dist/assets/clojure-DTECt2xU.js +6 -0
- package/web/dist/assets/codicon-DCmgc-ay.ttf +0 -0
- package/web/dist/assets/coffee-CDGzqUPQ.js +6 -0
- package/web/dist/assets/cpp-CLLBncYj.js +6 -0
- package/web/dist/assets/csharp-dUCx_-0o.js +6 -0
- package/web/dist/assets/csp-5Rap-vPy.js +6 -0
- package/web/dist/assets/css-D3h14YRZ.js +8 -0
- package/web/dist/assets/cssMode-C_gwipb0.js +9 -0
- package/web/dist/assets/cypher-DrQuvNYM.js +6 -0
- package/web/dist/assets/dart-CFKIUWau.js +6 -0
- package/web/dist/assets/dockerfile-Zznr-cwX.js +6 -0
- package/web/dist/assets/ecl-Ce3n6wWz.js +6 -0
- package/web/dist/assets/elixir-deUWdS0T.js +6 -0
- package/web/dist/assets/flow9-i9-g7ZhI.js +6 -0
- package/web/dist/assets/freemarker2-WCA_pR0J.js +8 -0
- package/web/dist/assets/fsharp-CzKuDChf.js +6 -0
- package/web/dist/assets/go-Cphgjts3.js +6 -0
- package/web/dist/assets/graphql-Cg7bfA9N.js +6 -0
- package/web/dist/assets/handlebars-fzVGzXHj.js +6 -0
- package/web/dist/assets/hcl-0cvrggvQ.js +6 -0
- package/web/dist/assets/html-C4Rga6DD.js +6 -0
- package/web/dist/assets/htmlMode-BvrJ57rW.js +9 -0
- package/web/dist/assets/index-9RP8PAfk.js +949 -0
- package/web/dist/assets/{index-37FqBzBn.css → index-BhjlwJCp.css} +1 -1
- package/web/dist/assets/ini-Drc7WvVn.js +6 -0
- package/web/dist/assets/java-B_fMsGYe.js +6 -0
- package/web/dist/assets/javascript-cXKyuP98.js +6 -0
- package/web/dist/assets/jsonMode-Q4CMzwiX.js +15 -0
- package/web/dist/assets/julia-Bqgm2twL.js +6 -0
- package/web/dist/assets/kotlin-BSkB5QuD.js +6 -0
- package/web/dist/assets/less-BsTHnhdd.js +7 -0
- package/web/dist/assets/lexon-YWi4-JPR.js +6 -0
- package/web/dist/assets/liquid-CrbU0gmK.js +6 -0
- package/web/dist/assets/lua-nf6ki56Z.js +6 -0
- package/web/dist/assets/m3-Cpb6xl2v.js +6 -0
- package/web/dist/assets/markdown-DSZPf7rp.js +6 -0
- package/web/dist/assets/mdx-D72Dcs66.js +6 -0
- package/web/dist/assets/mips-B_c3zf-v.js +6 -0
- package/web/dist/assets/msdax-rUNN04Wq.js +6 -0
- package/web/dist/assets/mysql-DDwshQtU.js +6 -0
- package/web/dist/assets/objective-c-B5zXfXm9.js +6 -0
- package/web/dist/assets/pascal-CXOwvkN_.js +6 -0
- package/web/dist/assets/pascaligo-Bc-ZgV77.js +6 -0
- package/web/dist/assets/perl-CwNk8-XU.js +6 -0
- package/web/dist/assets/pgsql-tGk8EFnU.js +6 -0
- package/web/dist/assets/php-CpIb_Oan.js +6 -0
- package/web/dist/assets/pla-B03wrqEc.js +6 -0
- package/web/dist/assets/postiats-BKlk5iyT.js +6 -0
- package/web/dist/assets/powerquery-Bhzvs7bI.js +6 -0
- package/web/dist/assets/powershell-Dd3NCNK9.js +6 -0
- package/web/dist/assets/protobuf-COyEY5Pt.js +7 -0
- package/web/dist/assets/pug-BaJupSGV.js +6 -0
- package/web/dist/assets/python-DPqkZ_Xm.js +6 -0
- package/web/dist/assets/qsharp-DXyYeYxl.js +6 -0
- package/web/dist/assets/r-CdQndTaG.js +6 -0
- package/web/dist/assets/razor-DknXaqXN.js +6 -0
- package/web/dist/assets/redis-CVwtpugi.js +6 -0
- package/web/dist/assets/redshift-25W9uPmb.js +6 -0
- package/web/dist/assets/restructuredtext-DfzH4Xui.js +6 -0
- package/web/dist/assets/ruby-Cp1zYvxS.js +6 -0
- package/web/dist/assets/rust-D5C2fndG.js +6 -0
- package/web/dist/assets/sb-CDntyWJ8.js +6 -0
- package/web/dist/assets/scala-BoFRg7Ot.js +6 -0
- package/web/dist/assets/scheme-Bio4gycK.js +6 -0
- package/web/dist/assets/scss-4Ik7cdeQ.js +8 -0
- package/web/dist/assets/shell-CX-rkNHf.js +6 -0
- package/web/dist/assets/solidity-Tw7wswEv.js +6 -0
- package/web/dist/assets/sophia-C5WLch3f.js +6 -0
- package/web/dist/assets/sparql-DHaeiCBh.js +6 -0
- package/web/dist/assets/sql-CCSDG5nI.js +6 -0
- package/web/dist/assets/st-pnP8ivHi.js +6 -0
- package/web/dist/assets/swift-DwJ7jVG9.js +8 -0
- package/web/dist/assets/systemverilog-B9Xyijhd.js +6 -0
- package/web/dist/assets/tcl-DnHyzjbg.js +6 -0
- package/web/dist/assets/tsMode-DZAV3Wgo.js +16 -0
- package/web/dist/assets/twig-CPajHgWi.js +6 -0
- package/web/dist/assets/typescript-DenKTmW3.js +6 -0
- package/web/dist/assets/typespec-D-MeaMDU.js +6 -0
- package/web/dist/assets/vb-DgyLZaXg.js +6 -0
- package/web/dist/assets/wgsl-BIv9DU6q.js +303 -0
- package/web/dist/assets/xml-C_uqJta0.js +6 -0
- package/web/dist/assets/yaml-vwb3U7d7.js +6 -0
- package/web/dist/index.html +2 -2
- package/web/package.json +5 -1
- package/@.txcode/req//351/241/265/351/235/242/345/270/203/345/261/200/AI/346/234/215/345/212/241/345/225/206/345/222/214/346/250/241/345/236/213/351/205/215/347/275/256.html +0 -241
- package/web/dist/assets/Layout-C3GGWAI1.js +0 -1
- package/web/dist/assets/index-LvJQilK_.js +0 -199
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
你是 txcode,一个帮助用户完成软件工程任务的交互式命令行工具。按照以下说明和可用工具来协助用户。
|
|
2
|
+
|
|
3
|
+
如果用户寻求帮助或想提供反馈,请告知他们:
|
|
4
|
+
/help:获取使用 txcode 的帮助
|
|
5
|
+
如需提供反馈,请在 https://gitee.com/homecommunity/txcode 提交问题
|
|
6
|
+
|
|
7
|
+
## 语气和风格
|
|
8
|
+
你应该简洁、直接、切中要点。请记住,你的输出将显示在命令行界面上。你的回复可以使用 GitHub 风格的 markdown 进行格式化,并将使用 CommonMark 规范以等宽字体呈现。
|
|
9
|
+
除非用户明确要求,否则不要使用表情符号。除非被要求,否则在所有交流中避免使用表情符号。
|
|
10
|
+
重要:在保持帮助性、质量和准确性的前提下,你应该尽可能减少输出标记。仅处理当前的特定查询或任务,除非对完成请求至关重要,否则避免无关信息。如果你能用1-3句话或一个简短的段落回答,请这样做。
|
|
11
|
+
重要:除非用户要求,否则你不应添加不必要的开场白或结束语(例如解释你的代码或总结你的操作)。
|
|
12
|
+
重要:保持回复简短,因为它们将显示在命令行界面上。除非用户要求详细说明,否则你的回答必须简洁,少于4行文本(不包括工具使用或代码生成)。直接回答用户的问题,无需阐述、解释或细节。
|
|
13
|
+
|
|
14
|
+
## 主动性
|
|
15
|
+
你可以主动行事,但仅限于用户要求你这样做。你应该努力在以下两点之间取得平衡:
|
|
16
|
+
1、在被要求时做正确的事,包括采取行动和后续行动
|
|
17
|
+
2、不要未经询问就采取行动让用户感到意外
|
|
18
|
+
例如,如果用户询问你如何处理某事,你应该首先尽力回答他们的问题,而不是立即采取行动。
|
|
19
|
+
3、除非用户要求,否则不要添加额外的代码解释总结。处理完文件后,直接停止,不要解释你做了什么。
|
|
20
|
+
|
|
21
|
+
## 遵循惯例
|
|
22
|
+
在修改文件时,首先要了解文件的代码惯例。模仿代码风格,使用现有的库和实用程序,并遵循现有模式。
|
|
23
|
+
·绝对不要假设某个库可用,即使它是众所周知的。每当你编写使用库或框架的代码时,首先要检查此代码库是否已使用该库。例如,你可以查看相邻文件,或检查 package.json(或 cargo.toml,等等,具体取决于语言)。
|
|
24
|
+
·当你创建新组件时,首先查看现有组件以了解它们的编写方式;然后考虑框架选择、命名约定、类型和其他约定。
|
|
25
|
+
·当你编辑一段代码时,首先查看代码的周围上下文(特别是其导入语句),以了解代码选择的框架和库。然后考虑如何以最符合惯用法的方式进行给定的更改。
|
|
26
|
+
始终遵循安全最佳实践。切勿引入暴露或记录机密和密钥的代码。切勿将机密或密钥提交到代码库。
|
|
27
|
+
|
|
28
|
+
## 代码风格
|
|
29
|
+
重要:除非被要求,否则不要添加 任何 注释
|
|
30
|
+
|
|
31
|
+
## 执行任务
|
|
32
|
+
用户主要会要求你执行软件工程任务。这包括解决错误、添加新功能、重构代码、解释代码等等。对于这些任务,建议遵循以下步骤:
|
|
33
|
+
·推荐检查AGENT.md了解项目(如果存在),然后使用查询记忆的工具查询有没有相关记忆,再根据SKILL有没有可用的SKILL
|
|
34
|
+
·使用可用的搜索工具来理解代码库和用户的查询。建议广泛并行和串行地使用搜索工具。
|
|
35
|
+
·使用你所有可用的工具来实现解决方案
|
|
36
|
+
·如果可能,通过测试验证解决方案。绝对不要假设特定的测试框架或测试脚本。查看 README 或搜索代码库以确定测试方法。
|
|
37
|
+
·非常重要:当你完成任务后,如果提供了 lint 和类型检查命令(例如 npm run lint、npm run typecheck、ruff 等),你必须使用 Bash 运行它们,以确保你的代码正确。如果你找不到正确的命令,请询问用户要运行的命令,如果他们提供了,主动建议将其写入 AGENTS.md,以便你下次知道要运行它。
|
|
38
|
+
·除非用户明确要求,否则绝对不要提交更改。非常重要,仅在明确要求时才提交,否则用户会觉得你过于主动。
|
|
39
|
+
|
|
40
|
+
## 工具使用策略
|
|
41
|
+
你可以在单个响应中调用多个工具。当请求多个独立信息时,请将你的工具调用组合在一起以获得最佳性能。当进行多个 bash 工具调用时,你必须发送一条包含多个工具调用的消息以并行运行这些调用。例如,如果你需要运行"git status"和"git diff",请发送一条包含两个工具调用的消息以并行运行这些调用。
|
|
42
|
+
你必须简洁地回答,文本少于 4 行(不包括工具使用或代码生成),除非用户要求详细信息。
|
|
43
|
+
重要:在开始工作之前,根据文件名和目录结构思考你要编辑的代码应该做什么。
|
|
44
|
+
|
|
45
|
+
## 代码引用
|
|
46
|
+
在引用特定函数或代码片段时,请包含 file_path:line_number 格式的模式,以便用户轻松导航到源代码位置。
|
|
47
|
+
<example> 用户:客户端的错误在哪里处理? 助手:客户端在 `src/services/process.ts:712` 的 `connectToServer` 函数中被标记为失败。 </example>
|
|
48
|
+
|
|
49
|
+
## 运行环境
|
|
50
|
+
- 操作系统: {platform}
|
|
51
|
+
- 工作目录: {workdir}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CodeAgent } from './code/code.agent.js';
|
|
2
|
+
export { ChatAgent } from './chat/chat.agent.js';
|
|
3
|
+
export { TaskAgent } from './task/task.agent.js';
|
|
4
|
+
export { CODE_TOOLS } from './code/agent_tool.js';
|
|
5
|
+
export { CHAT_TOOLS } from './chat/agent_tool.js';
|
|
6
|
+
export { TASK_TOOLS } from './task/agent_tool.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/ai/agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CodeAgent } from './code/code.agent.js';
|
|
2
|
+
export { ChatAgent } from './chat/chat.agent.js';
|
|
3
|
+
export { TaskAgent } from './task/task.agent.js';
|
|
4
|
+
export { CODE_TOOLS } from './code/agent_tool.js';
|
|
5
|
+
export { CHAT_TOOLS } from './chat/agent_tool.js';
|
|
6
|
+
export { TASK_TOOLS } from './task/agent_tool.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/ai/agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent_tool.d.ts","sourceRoot":"","sources":["../../../../../src/modules/ai/agents/task/agent_tool.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,UAAU,EAAE,MAAM,EAW9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent_tool.js","sourceRoot":"","sources":["../../../../../src/modules/ai/agents/task/agent_tool.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,MAAM,CAAC,MAAM,UAAU,GAAa;IACjC,WAAW;IACZ,YAAY;IACZ,WAAW;IACX,MAAM;IACN,MAAM;IACN,MAAM;IACN,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,OAAO;CACR,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
你是 txcode,一个帮助用户完成特定任务的交互式命令行工具。按照以下说明和可用工具来协助用户。
|
|
2
|
+
|
|
3
|
+
如果用户寻求帮助或想提供反馈,请告知他们:
|
|
4
|
+
/help:获取使用 txcode 的帮助
|
|
5
|
+
如需提供反馈,请在 https://gitee.com/homecommunity/txcode 提交问题
|
|
6
|
+
|
|
7
|
+
## 语气和风格
|
|
8
|
+
你应该简洁、直接、切中要点。请记住,你的输出将显示在命令行界面上。你的回复可以使用 GitHub 风格的 markdown 进行格式化,并将使用 CommonMark 规范以等宽字体呈现。
|
|
9
|
+
除非用户明确要求,否则不要使用表情符号。除非被要求,否则在所有交流中避免使用表情符号。
|
|
10
|
+
重要:在保持帮助性、质量和准确性的前提下,你应该尽可能减少输出标记。仅处理当前的特定查询或任务,除非对完成请求至关重要,否则避免无关信息。如果你能用1-3句话或一个简短的段落回答,请这样做。
|
|
11
|
+
重要:除非用户要求,否则你不应添加不必要的开场白或结束语(例如解释你的代码或总结你的操作)。
|
|
12
|
+
重要:保持回复简短,因为它们将显示在命令行界面上。除非用户要求详细说明,否则你的回答必须简洁,少于4行文本(不包括工具使用或代码生成)。直接回答用户的问题,无需阐述、解释或细节。
|
|
13
|
+
|
|
14
|
+
## 主动性
|
|
15
|
+
你可以主动行事,但仅限于用户要求你这样做。你应该努力在以下两点之间取得平衡:
|
|
16
|
+
1、在被要求时做正确的事,包括采取行动和后续行动
|
|
17
|
+
2、不要未经询问就采取行动让用户感到意外
|
|
18
|
+
例如,如果用户询问你如何处理某事,你应该首先尽力回答他们的问题,而不是立即采取行动。
|
|
19
|
+
3、除非用户要求,否则不要添加额外的代码解释总结。处理完文件后,直接停止,不要解释你做了什么。
|
|
20
|
+
|
|
21
|
+
## 遵循惯例
|
|
22
|
+
在修改文件时,首先要了解文件的代码惯例。模仿代码风格,使用现有的库和实用程序,并遵循现有模式。
|
|
23
|
+
·绝对不要假设某个库可用,即使它是众所周知的。每当你编写使用库或框架的代码时,首先要检查此代码库是否已使用该库。例如,你可以查看相邻文件,或检查 package.json(或 cargo.toml,等等,具体取决于语言)。
|
|
24
|
+
·当你创建新组件时,首先查看现有组件以了解它们的编写方式;然后考虑框架选择、命名约定、类型和其他约定。
|
|
25
|
+
·当你编辑一段代码时,首先查看代码的周围上下文(特别是其导入语句),以了解代码选择的框架和库。然后考虑如何以最符合惯用法的方式进行给定的更改。
|
|
26
|
+
始终遵循安全最佳实践。切勿引入暴露或记录机密和密钥的代码。切勿将机密或密钥提交到代码库。
|
|
27
|
+
|
|
28
|
+
## 代码风格
|
|
29
|
+
重要:除非被要求,否则不要添加 任何 注释
|
|
30
|
+
|
|
31
|
+
## 执行任务
|
|
32
|
+
用户主要会要求你执行任务时,建议遵循以下步骤:
|
|
33
|
+
·你必须要阅读传入的SKILL,根据SKILL以及任务描述来解决问题
|
|
34
|
+
·使用可用的搜索工具来理解代码库和用户的查询。建议广泛并行和串行地使用搜索工具。
|
|
35
|
+
·使用你所有可用的工具来实现解决方案
|
|
36
|
+
·如果可能,通过测试验证解决方案。绝对不要假设特定的测试框架或测试脚本。查看 README 或搜索代码库以确定测试方法。
|
|
37
|
+
·非常重要:当你完成任务后,如果提供了 lint 和类型检查命令(例如 npm run lint、npm run typecheck、ruff 等),你必须使用 Bash 运行它们,以确保你的代码正确。如果你找不到正确的命令,请询问用户要运行的命令,如果他们提供了,主动建议将其写入 AGENTS.md,以便你下次知道要运行它。
|
|
38
|
+
·除非用户明确要求,否则绝对不要提交更改。非常重要,仅在明确要求时才提交,否则用户会觉得你过于主动。
|
|
39
|
+
|
|
40
|
+
## 工具使用策略
|
|
41
|
+
你可以在单个响应中调用多个工具。当请求多个独立信息时,请将你的工具调用组合在一起以获得最佳性能。当进行多个 bash 工具调用时,你必须发送一条包含多个工具调用的消息以并行运行这些调用。例如,如果你需要运行"git status"和"git diff",请发送一条包含两个工具调用的消息以并行运行这些调用。
|
|
42
|
+
你必须简洁地回答,文本少于 4 行(不包括工具使用或代码生成),除非用户要求详细信息。
|
|
43
|
+
重要:在开始工作之前,根据文件名和目录结构思考你要编辑的代码应该做什么。
|
|
44
|
+
|
|
45
|
+
## 代码引用
|
|
46
|
+
在引用特定函数或代码片段时,请包含 file_path:line_number 格式的模式,以便用户轻松导航到源代码位置。
|
|
47
|
+
<example> 用户:客户端的错误在哪里处理? 助手:客户端在 `src/services/process.ts:712` 的 `connectToServer` 函数中被标记为失败。 </example>
|
|
48
|
+
|
|
49
|
+
## 运行环境
|
|
50
|
+
- 操作系统: {platform}
|
|
51
|
+
- 工作目录: {workdir}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { OpenAIProvider } from '../../openai.provider.js';
|
|
2
|
+
import { AIProvider, ProviderRunOptions, ProviderRunResult } from '../../provider/base.js';
|
|
3
|
+
import type { MemoryService } from '../../../memory/memory.service.js';
|
|
4
|
+
export interface TaskAgentConfig {
|
|
5
|
+
provider: OpenAIProvider;
|
|
6
|
+
maxIterations?: number;
|
|
7
|
+
projectPath?: string;
|
|
8
|
+
sessionId?: string;
|
|
9
|
+
memoryService?: MemoryService;
|
|
10
|
+
}
|
|
11
|
+
export declare class TaskAgent implements AIProvider {
|
|
12
|
+
name: string;
|
|
13
|
+
tools: string[];
|
|
14
|
+
keepContext: boolean;
|
|
15
|
+
private provider;
|
|
16
|
+
private maxIterations;
|
|
17
|
+
private projectPath?;
|
|
18
|
+
private sessionId?;
|
|
19
|
+
private memoryService?;
|
|
20
|
+
private providerTools;
|
|
21
|
+
private providerToolsMap;
|
|
22
|
+
constructor(config: TaskAgentConfig);
|
|
23
|
+
run(userMessage: string, options?: ProviderRunOptions): Promise<ProviderRunResult>;
|
|
24
|
+
getType(): string;
|
|
25
|
+
private executeTool;
|
|
26
|
+
private getBuiltinTools;
|
|
27
|
+
private getFilteredTools;
|
|
28
|
+
private buildPrompt;
|
|
29
|
+
private loadRoleTemplate;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=task.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.agent.d.ts","sourceRoot":"","sources":["../../../../../src/modules/ai/agents/task/task.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK1D,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EAKlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGvE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,qBAAa,SAAU,YAAW,UAAU;IAC1C,IAAI,SAAU;IACd,KAAK,WAAc;IACnB,WAAW,UAAS;IAEpB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,gBAAgB,CAA+B;gBAE3C,MAAM,EAAE,eAAe;IAQ7B,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,CAAC;IAqI7B,OAAO,IAAI,MAAM;YAIH,WAAW;YAuBX,eAAe;YAWf,gBAAgB;YAKhB,WAAW;YAuDX,gBAAgB;CAY/B"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { TASK_TOOLS } from './agent_tool.js';
|
|
2
|
+
import { getOpenAITools } from '../../../tools/provider/tools.js';
|
|
3
|
+
import { getProviderTools } from '../../../tools/provider/index.js';
|
|
4
|
+
import { buildAvailableSkillsPrompt } from '../../../skill/skill.tool.js';
|
|
5
|
+
export class TaskAgent {
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.name = 'task';
|
|
8
|
+
this.tools = TASK_TOOLS;
|
|
9
|
+
this.keepContext = false;
|
|
10
|
+
this.providerTools = [];
|
|
11
|
+
this.providerToolsMap = new Map();
|
|
12
|
+
this.provider = config.provider;
|
|
13
|
+
this.maxIterations = config.maxIterations || 50;
|
|
14
|
+
this.projectPath = config.projectPath;
|
|
15
|
+
this.sessionId = config.sessionId;
|
|
16
|
+
this.memoryService = config.memoryService;
|
|
17
|
+
}
|
|
18
|
+
async run(userMessage, options) {
|
|
19
|
+
this.providerTools = await this.getFilteredTools();
|
|
20
|
+
this.providerToolsMap.clear();
|
|
21
|
+
for (const t of this.providerTools) {
|
|
22
|
+
this.providerToolsMap.set(t.name, t);
|
|
23
|
+
}
|
|
24
|
+
const steps = [];
|
|
25
|
+
const baseMessages = [];
|
|
26
|
+
const abortSignal = options?.abortSignal;
|
|
27
|
+
const builtinTools = await this.getBuiltinTools();
|
|
28
|
+
const systemPrompt = await this.buildPrompt(await this.getBuiltinTools());
|
|
29
|
+
baseMessages.push({ role: 'user', content: userMessage });
|
|
30
|
+
let iteration = 0;
|
|
31
|
+
let finalAnswer = '';
|
|
32
|
+
let totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
|
|
33
|
+
while (iteration < this.maxIterations) {
|
|
34
|
+
if (abortSignal?.aborted) {
|
|
35
|
+
throw new Error('ABORTED');
|
|
36
|
+
}
|
|
37
|
+
iteration++;
|
|
38
|
+
const messages = [
|
|
39
|
+
{ role: 'system', content: systemPrompt },
|
|
40
|
+
...baseMessages,
|
|
41
|
+
];
|
|
42
|
+
const response = await this.provider.chat(messages, {
|
|
43
|
+
tools: builtinTools,
|
|
44
|
+
abortSignal,
|
|
45
|
+
sessionId: this.sessionId,
|
|
46
|
+
modelName: this.provider.getModel(),
|
|
47
|
+
});
|
|
48
|
+
if (abortSignal?.aborted) {
|
|
49
|
+
throw new Error('ABORTED');
|
|
50
|
+
}
|
|
51
|
+
if (response.usage) {
|
|
52
|
+
totalUsage.promptTokens += response.usage.promptTokens;
|
|
53
|
+
totalUsage.completionTokens += response.usage.completionTokens;
|
|
54
|
+
totalUsage.totalTokens += response.usage.totalTokens;
|
|
55
|
+
}
|
|
56
|
+
if (response.finishReason === 'stop' && response.content) {
|
|
57
|
+
finalAnswer = response.content;
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
if (response.finishReason === 'tool_calls' && response.toolCalls && response.toolCalls.length > 0) {
|
|
61
|
+
const toolCalls = response.toolCalls.map((tc) => ({
|
|
62
|
+
id: tc.id,
|
|
63
|
+
name: tc.function.name,
|
|
64
|
+
arguments: typeof tc.function.arguments === 'string'
|
|
65
|
+
? JSON.parse(tc.function.arguments)
|
|
66
|
+
: tc.function.arguments,
|
|
67
|
+
}));
|
|
68
|
+
const results = [];
|
|
69
|
+
for (const toolCall of toolCalls) {
|
|
70
|
+
const result = await this.executeTool(toolCall.name, toolCall.arguments);
|
|
71
|
+
results.push({
|
|
72
|
+
name: toolCall.name,
|
|
73
|
+
success: result.success,
|
|
74
|
+
output: result.data,
|
|
75
|
+
error: result.error,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const step = {
|
|
79
|
+
reasoning: response.reasoning,
|
|
80
|
+
toolCalls,
|
|
81
|
+
results,
|
|
82
|
+
};
|
|
83
|
+
steps.push(step);
|
|
84
|
+
options?.onStep?.(step, iteration, response.usage);
|
|
85
|
+
for (let i = 0; i < toolCalls.length; i++) {
|
|
86
|
+
const toolCall = toolCalls[i];
|
|
87
|
+
const result = results[i];
|
|
88
|
+
const assistantMsg = {
|
|
89
|
+
role: 'assistant',
|
|
90
|
+
content: null,
|
|
91
|
+
toolCalls: [{
|
|
92
|
+
id: toolCall.id,
|
|
93
|
+
type: 'function',
|
|
94
|
+
function: {
|
|
95
|
+
name: toolCall.name,
|
|
96
|
+
arguments: JSON.stringify(toolCall.arguments),
|
|
97
|
+
},
|
|
98
|
+
}],
|
|
99
|
+
};
|
|
100
|
+
baseMessages.push(assistantMsg);
|
|
101
|
+
const toolMsg = {
|
|
102
|
+
role: 'tool',
|
|
103
|
+
content: result.success ? result.output || '' : `Error: ${result.error}`,
|
|
104
|
+
toolCallId: toolCall.id,
|
|
105
|
+
};
|
|
106
|
+
baseMessages.push(toolMsg);
|
|
107
|
+
}
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (response.content) {
|
|
111
|
+
finalAnswer = response.content;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
const success = iteration < this.maxIterations && finalAnswer.length > 0;
|
|
117
|
+
return {
|
|
118
|
+
answer: finalAnswer || steps[steps.length - 1]?.results?.[0]?.output || 'Unable to complete task',
|
|
119
|
+
steps,
|
|
120
|
+
iterations: iteration,
|
|
121
|
+
success,
|
|
122
|
+
error: iteration >= this.maxIterations ? 'Max iterations reached' : undefined,
|
|
123
|
+
usage: totalUsage,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
getType() {
|
|
127
|
+
return 'task';
|
|
128
|
+
}
|
|
129
|
+
async executeTool(name, args) {
|
|
130
|
+
try {
|
|
131
|
+
const tool = this.providerToolsMap.get(name);
|
|
132
|
+
if (!tool) {
|
|
133
|
+
throw new Error(`Tool not found: ${name}`);
|
|
134
|
+
}
|
|
135
|
+
const context = {
|
|
136
|
+
sessionId: this.sessionId || '',
|
|
137
|
+
workDir: this.projectPath || process.cwd(),
|
|
138
|
+
};
|
|
139
|
+
const result = await tool.execute(args, context);
|
|
140
|
+
return { success: result.success, data: result.output, error: result.error };
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
return {
|
|
144
|
+
success: false,
|
|
145
|
+
error: error instanceof Error ? error.message : String(error),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async getBuiltinTools() {
|
|
150
|
+
if (this.providerTools.length === 0) {
|
|
151
|
+
this.providerTools = await this.getFilteredTools();
|
|
152
|
+
this.providerToolsMap.clear();
|
|
153
|
+
for (const t of this.providerTools) {
|
|
154
|
+
this.providerToolsMap.set(t.name, t);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return await getOpenAITools();
|
|
158
|
+
}
|
|
159
|
+
async getFilteredTools() {
|
|
160
|
+
const allTools = await getProviderTools();
|
|
161
|
+
return allTools.filter((tool) => this.tools.includes(tool.name));
|
|
162
|
+
}
|
|
163
|
+
async buildPrompt(_builtinTools = []) {
|
|
164
|
+
const platform = process.platform;
|
|
165
|
+
const workdir = this.projectPath || process.cwd();
|
|
166
|
+
const platformName = platform === 'win32' ? 'Windows'
|
|
167
|
+
: platform === 'darwin' ? 'macOS'
|
|
168
|
+
: platform === 'linux' ? 'Linux'
|
|
169
|
+
: platform;
|
|
170
|
+
const roleTemplate = await this.loadRoleTemplate();
|
|
171
|
+
const skillsPrompt = await buildAvailableSkillsPrompt();
|
|
172
|
+
const promptTemplate = `${roleTemplate}
|
|
173
|
+
|
|
174
|
+
你通过 OpenAI Function Calling 模式工作:
|
|
175
|
+
|
|
176
|
+
1. AI 生成结构化的工具调用请求
|
|
177
|
+
2. 系统自动执行工具并返回结果
|
|
178
|
+
3. 重复直到任务完成
|
|
179
|
+
|
|
180
|
+
## 上下文管理
|
|
181
|
+
|
|
182
|
+
Task 模式下,本次任务结束后不保留对话历史。
|
|
183
|
+
|
|
184
|
+
## 内置工具
|
|
185
|
+
|
|
186
|
+
{builtinTools}
|
|
187
|
+
|
|
188
|
+
## 可用 Skills
|
|
189
|
+
|
|
190
|
+
{skills}
|
|
191
|
+
|
|
192
|
+
## 重要规则
|
|
193
|
+
|
|
194
|
+
- 优先使用内置工具
|
|
195
|
+
- 在执行任务前,先使用 skill 加载相关 Skill 指南了解约束和最佳实践
|
|
196
|
+
- 如果工具执行失败,思考原因并尝试其他方法
|
|
197
|
+
- 最大迭代次数: {maxIterations}
|
|
198
|
+
|
|
199
|
+
## 运行环境
|
|
200
|
+
- 操作系统: {platform}
|
|
201
|
+
- 工作目录: {workdir}
|
|
202
|
+
`;
|
|
203
|
+
const openaiTools = await getOpenAITools();
|
|
204
|
+
const builtinToolsDesc = openaiTools.map(t => `- **${t.function.name}**: ${t.function.description}`).join('\n');
|
|
205
|
+
return promptTemplate
|
|
206
|
+
.replace('{platform}', platformName)
|
|
207
|
+
.replace('{workdir}', workdir)
|
|
208
|
+
.replace('{builtinTools}', builtinToolsDesc || '(无)')
|
|
209
|
+
.replace('{skills}', skillsPrompt)
|
|
210
|
+
.replace('{maxIterations}', String(this.maxIterations));
|
|
211
|
+
}
|
|
212
|
+
async loadRoleTemplate() {
|
|
213
|
+
try {
|
|
214
|
+
const fs = await import('fs/promises');
|
|
215
|
+
const path = await import('path');
|
|
216
|
+
const { fileURLToPath } = await import('url');
|
|
217
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
218
|
+
const __dirname = path.dirname(__filename);
|
|
219
|
+
return await fs.readFile(path.join(__dirname, 'prompts', 'role.txt'), 'utf-8');
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return '你是一个定时任务助手。';
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=task.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.agent.js","sourceRoot":"","sources":["../../../../../src/modules/ai/agents/task/task.agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 本模块是 TXCode 的核心 AI 服务层,负责:
|
|
5
5
|
* 1. AI Provider 管理 - 创建和管理 OpenAI/自定义 API 提供商
|
|
6
6
|
* 2. 对话接口 - 提供 chat() 和 chatStream() 方法
|
|
7
|
-
* 3.
|
|
7
|
+
* 3. Function Calling 集成 - 通过 OpenAIAgent 执行工具调用循环
|
|
8
8
|
* 4. 上下文管理 - 加载会话历史、项目上下文
|
|
9
9
|
* 5. 自动压缩 - 当 Token 达到阈值时自动压缩会话历史
|
|
10
10
|
*
|
|
@@ -18,8 +18,6 @@ import { ProviderRunResult } from './provider/base.js';
|
|
|
18
18
|
import { ToolService } from '../tools/tool.service.js';
|
|
19
19
|
import { MemoryService } from '../memory/memory.service.js';
|
|
20
20
|
import { ContextService } from '../context/context.service.js';
|
|
21
|
-
import { SkillsManager } from '../skill/skills.manager.js';
|
|
22
|
-
import { ReActResult } from './react/react.types.js';
|
|
23
21
|
/**
|
|
24
22
|
* AIService 构造函数配置参数
|
|
25
23
|
*/
|
|
@@ -28,9 +26,7 @@ export interface AIServiceConfig {
|
|
|
28
26
|
configService?: ConfigService;
|
|
29
27
|
/** 工具服务 (内置/自定义工具) */
|
|
30
28
|
toolService?: ToolService;
|
|
31
|
-
/**
|
|
32
|
-
skillsManager?: SkillsManager;
|
|
33
|
-
/** ReAct Agent 最大迭代次数 */
|
|
29
|
+
/** Function Calling Agent 最大迭代次数 */
|
|
34
30
|
maxToolIterations?: number;
|
|
35
31
|
}
|
|
36
32
|
/**
|
|
@@ -45,7 +41,7 @@ export interface AIServiceConfig {
|
|
|
45
41
|
* 1. 用户发送消息 -> API 路由接收
|
|
46
42
|
* 2. API 调用 aiService.chatWithTools()
|
|
47
43
|
* 3. AIService 获取会话历史,构建消息列表
|
|
48
|
-
* 4. 创建
|
|
44
|
+
* 4. 创建 OpenAIAgent 并执行循环
|
|
49
45
|
* 5. 返回结果给 API
|
|
50
46
|
* 6. API 返回给客户端
|
|
51
47
|
*/
|
|
@@ -56,18 +52,16 @@ export declare class AIService {
|
|
|
56
52
|
private toolService;
|
|
57
53
|
/** 会话服务实例 */
|
|
58
54
|
private sessionService;
|
|
59
|
-
/** 技能管理器实例 (可选) */
|
|
60
|
-
private skillsManager?;
|
|
61
55
|
/** AI Provider 实例 (延迟初始化) */
|
|
62
56
|
private provider;
|
|
63
|
-
/**
|
|
57
|
+
/** Function Calling Agent 最大迭代次数 */
|
|
64
58
|
private maxToolIterations;
|
|
65
59
|
/**
|
|
66
60
|
* 构造函数
|
|
67
61
|
*
|
|
68
62
|
* @param config - AIServiceConfig 配置对象
|
|
69
63
|
* - 如果不提供配置,使用默认服务实例
|
|
70
|
-
* - 允许自定义 ConfigService、ToolService
|
|
64
|
+
* - 允许自定义 ConfigService、ToolService 等
|
|
71
65
|
*/
|
|
72
66
|
constructor(config?: AIServiceConfig);
|
|
73
67
|
/**
|
|
@@ -91,7 +85,7 @@ export declare class AIService {
|
|
|
91
85
|
* 简单的 AI 对话接口
|
|
92
86
|
*
|
|
93
87
|
* 与 chatWithTools 的区别:
|
|
94
|
-
* - 不执行
|
|
88
|
+
* - 不执行 Function Calling 循环
|
|
95
89
|
* - 不支持工具调用
|
|
96
90
|
* - 适用于简单的问答场景
|
|
97
91
|
*
|
|
@@ -103,13 +97,13 @@ export declare class AIService {
|
|
|
103
97
|
/**
|
|
104
98
|
* 带工具调用的 AI 对话接口 (核心方法)
|
|
105
99
|
*
|
|
106
|
-
* 这是 TXCode 最核心的方法,执行
|
|
100
|
+
* 这是 TXCode 最核心的方法,执行 Function Calling 循环来完成任务
|
|
107
101
|
*
|
|
108
102
|
* 执行流程:
|
|
109
103
|
* 1. 获取/创建 AI Provider
|
|
110
104
|
* 2. 获取会话历史消息
|
|
111
|
-
* 3. 创建
|
|
112
|
-
* 4. 执行 agent.run() 启动
|
|
105
|
+
* 3. 创建 OpenAIAgent
|
|
106
|
+
* 4. 执行 agent.run() 启动 Function Calling 循环
|
|
113
107
|
* 5. 更新会话 Token 统计
|
|
114
108
|
* 6. 检查是否需要压缩会话 (自动摘要)
|
|
115
109
|
* 7. 返回结果
|
|
@@ -121,20 +115,21 @@ export declare class AIService {
|
|
|
121
115
|
* - memoryService: 记忆服务实例
|
|
122
116
|
* - contextService: 上下文服务实例
|
|
123
117
|
* - onStep: 每一步执行完的回调
|
|
124
|
-
* @returns {Promise<
|
|
118
|
+
* @returns {Promise<ProviderRunResult>} Function Calling 执行结果
|
|
125
119
|
*/
|
|
126
120
|
chatWithTools(userMessage: string, options?: {
|
|
127
121
|
sessionId?: string;
|
|
128
122
|
projectPath?: string;
|
|
129
123
|
memoryService?: MemoryService;
|
|
130
124
|
contextService?: ContextService;
|
|
131
|
-
onStep?: (step: any, iteration: number) => void;
|
|
125
|
+
onStep?: (step: any, iteration: number, usage?: any) => void;
|
|
132
126
|
onCompact?: (info: {
|
|
133
127
|
beforeTokens: number;
|
|
134
128
|
afterTokens: number;
|
|
135
129
|
}) => void;
|
|
136
130
|
abortSignal?: AbortSignal;
|
|
137
|
-
|
|
131
|
+
modelName?: string;
|
|
132
|
+
}): Promise<ProviderRunResult>;
|
|
138
133
|
/**
|
|
139
134
|
* 流式 AI 对话接口
|
|
140
135
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.service.d.ts","sourceRoot":"","sources":["../../../src/modules/ai/ai.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAyC,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ai.service.d.ts","sourceRoot":"","sources":["../../../src/modules/ai/ai.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAyC,MAAM,6BAA6B,CAAC;AAGnG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAqC,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAK/D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,sBAAsB;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAS;IACpB,aAAa;IACb,OAAO,CAAC,aAAa,CAAgB;IACrC,aAAa;IACb,OAAO,CAAC,WAAW,CAAc;IACjC,aAAa;IACb,OAAO,CAAC,cAAc,CAAiB;IACvC,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAA+B;IAC/C,oCAAoC;IACpC,OAAO,CAAC,iBAAiB,CAAS;IAElC;;;;;;OAMG;gBACS,MAAM,CAAC,EAAE,eAAe;IAOpC;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,WAAW;IAenB;;;;;;;;;;;OAWG;IACG,IAAI,CACR,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,YAAY,CAAC;IAKxB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAC7D,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAC;QAC1E,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,OAAO,CAAC,iBAAiB,CAAC;IAoG7B;;;;;;;;;OASG;IACI,UAAU,CACf,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,WAAgB,GACxB,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;IAKxC;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;;;;;;OAOG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQjC;;;;;OAKG;IACH,aAAa,IAAI,IAAI;CAGtB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|